package COM.ZYC0801;

/**
 * 珍珠类，继承自奶茶类，代表添加了珍珠的奶茶
 * 通过组合关系包含一个奶茶对象，以保持原有奶茶特性的同时添加珍珠特性
 */
public class Zhenzhu extends Naihcha {
    // 组合关系，珍珠对象包含一个奶茶对象
    private Naihcha naihcha;

    /**
     * 构造函数，初始化珍珠对象时指定其包含的奶茶类型
     * @param n 奶茶对象，表示珍珠添加到哪种类型的奶茶中
     */
    public Zhenzhu(Naihcha n){
        this.naihcha = n;
    }

    /**
     * 覆盖run方法，先执行奶茶对象的run方法，然后添加珍珠
     * 这里体现了责任链模式的思想，每个装饰类可以依次对run方法进行扩展
     */
    public void run() {
        // 调用奶茶对象的run方法，执行奶茶的制作流程
        naihcha.run();
        // 在奶茶制作完成后，添加珍珠
        System.out.println("加珍珠");
    }
}
